﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SanFranciscoModel.Docente;
using SanFranciscoModel.Curso;
using SanFranciscoModel.Intermedias;
using SanFranciscoModel.Materia;
using SanFranciscoModel.Horarios;

namespace SanFrancisco
{
    public partial class DesempeñoDocente : Form
    {
        int _DNI;
        List<Curso> ListCurso = new List<Curso>();
        List<Materia> ListMateria = new List<Materia>();
        List<Docente> ListDocente = new List<Docente>();

        public DesempeñoDocente(int dni)
        {
            _DNI = dni;
            InitializeComponent();
        }

        private void DesempeñoDocente_Load(object sender, EventArgs e)
        {
            txtDNI.Text = _DNI.ToString();

            CargarNotas();
            CargarCurso();

            CursoXMateriaXDocente CursoXMateriaXDocente = new CursoXMateriaXDocente();
            CursoManager CursoManager = new CursoManager();
            //CursoManager.getCursoXMateriaXDocenteByIDCursoIDMateria(
        }

        private void CargarNotas()
        {
            int i;
            for (i = 1; i < 11; i++)
            {
                cmbNotaConducta.Items.Add(i.ToString());
            }
        }

        private void CargarCurso()
        {
            CursoManager cm = new CursoManager();
            List<HorarioDocente> ListHorariosDocente = DocenteManager.getHorarioDocenteByDNI(_DNI);
            List<Curso> ListCursos = new List<Curso>();

            foreach (HorarioDocente hd in ListHorariosDocente)
            {
                bool flag = false;
                if (flag==false)
                {
                    foreach (Curso c in ListCursos)
                    {
                        if (c.idCurso == hd.IdCurso)
                        {
                            flag = true;
                        }
                    }
                    if (flag==false)
                    ListCursos.Add(cm.getCursoActualbyId(hd.IdCurso));
                }
            }
            cmCurso.DisplayMember = "nombrecurso";
            cmCurso.ValueMember = "idCurso";
            cmCurso.DataSource = ListCursos;

            if (cmCurso.Items.Count < 1)
            {
                MessageBox.Show("El docente no posee ningun curso asignado! Por favor primero asigne un curso al Docente!");
                this.Close();
            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            if (cmbNotaConducta.SelectedItem == null)
            {
                MessageBox.Show("Debe seleccionar una Calificacion!");
            }
            else
            {
                DocenteManager DocenteManager = new SanFranciscoModel.Docente.DocenteManager();

                string aclaraciones = "";
                if (txtAclaraciones.Text.Trim() != "") { aclaraciones = txtAclaraciones.Text; }

                if (DocenteManager.ExisteDesempenoDocente(_DNI, (int)cmCurso.SelectedValue, (int)cmbMateria.SelectedValue) == false)
                {
                    DocenteManager.guardarDesempeñoDocente(_DNI, (int)cmCurso.SelectedValue, (int)(cmbMateria.SelectedValue), int.Parse(cmbNotaConducta.Text), aclaraciones);
                    MessageBox.Show("Desempeño cargado con exito");
                    this.Close();
                }
                else
                {
                    MessageBox.Show("El Docente ya tiene un desempeño guardada para este curso y esta materia");
                    this.Close();
                }
            }
        }

        private void cmCurso_SelectedIndexChanged(object sender, EventArgs e)
        {
            List<HorarioDocente> ListHorariosDocente = DocenteManager.getHorarioDocenteByDNI(_DNI);
            List<Materia> ListMaterias = new List<Materia>();
            MateriaManager mm = new MateriaManager();

            foreach (HorarioDocente hd in ListHorariosDocente)
            {
                if (hd.IdCurso == (int)cmCurso.SelectedValue)
                {
                    bool flag = false;
                    if (flag == false)
                    {
                        foreach (Materia c in ListMaterias)
                        {
                            if (c.idMateria == hd.IdMateria)
                            {
                                flag = true;
                            }
                        }
                        if (flag == false)
                            ListMaterias.Add(mm.getMateriasByIdMateria(hd.IdMateria));
                    }
                }
            }

            cmbMateria.DisplayMember = "Materia1";
            cmbMateria.ValueMember = "idMateria";
            cmbMateria.DataSource = ListMaterias;
        }
    }
}
